package com.链表.练习题;

public class Leetcode876 {
    /**
     * 链表的中间节点
     *
     * 给你单链表的头结点 head ，请你找出并返回链表的中间结点。
     * 如果有两个中间结点，则返回第二个中间结点。
     *
     * 输入：head = [1,2,3,4,5,6]
     * 输出：[4,5,6]
     * 解释：该链表有两个中间结点，值分别为 3 和 4 ，返回第二个结点。
     */
    public ListNode middleNode(ListNode head) {
        ListNode p1 = head;	// 慢指针，中间点
        ListNode p2 = head;	// 快指针
        while (p2 != null && p2.next != null) {
            p1 = p1.next;
            p2 = p2.next;
            p2 = p2.next;
        }
        return p1;
    }
}
